/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionnaires;

import java.util.Collection;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import modeles.Commentaire;
import modeles.Film;
import modeles.Genre;
import modeles.Note;
import modeles.Utilisateur;

/**
 *
 * @author mazid
 */
@Stateless
public class GestionUtilisateur {
    @PersistenceContext(unitName = "Projet-WebPU")
    private EntityManager em;

    public void persist(Object object) {
        em.persist(object);
    }
   // creer un utilisateur de test
     
    public Utilisateur creerUtilisateur(String login, String pwd, String nomU,String prenomU,String email,
            Collection<Commentaire> comms, Collection<Note> notes){
        Utilisateur u = new  Utilisateur(login, pwd, nomU, prenomU, email);
        u.setCommentaires(comms);
        u.setNotes(notes);
        em.persist(u);
        return u;
    }
     
   /*
    * affiche la liste de tous les users
    */
    
    public Collection<Utilisateur> getAllUtilisateur() {
         Query q = em.createQuery("select u from Genre u");  
        return q.getResultList();  
    }
    /**
     * cette fonction va permettre de tester si le login et mot de passe de l'utilisateur
     * est correcte. 
     * NB:cette fonction ne marche pas pr l'instant
     * @param login identifiant du client
     * @param pwd son mot de passe
     * @return true si correcte ou false au cas contraire
     */
    public Utilisateur testLoginUsers(String login, String pwd){
        Query q = em.createQuery("select u from Utilisateur u where u.login=:param1 AND u.password=:param2");
        q.setParameter("param1", login);
        q.setParameter("param2", pwd);
        Utilisateur u = null;
        try {
            u = (Utilisateur)q.getSingleResult();
        } catch (Exception e) {
            u = null;
        }
        return u;
    }
    
    /* supprimer un user dansla liste des users
    * 
    */
    public void supprimerUtilisateur(Utilisateur utilisateur){
        this.em.remove(utilisateur);
        
     }
    /**
     * recupere un utilisateur a partir de son login
     * @param loginUser identifiant à partir du quel il est rechercher
     * @return l'utilisateur s'il est trouvé.
     */
     public Utilisateur getUserParLogin(String loginUser){
        Query q = em.createQuery("select u from Utilisateur u where u.login=:param;");
        q.setParameter("param",loginUser);
        return (Utilisateur)q.getSingleResult();
    }
}
